package seqlist.array.leetcode;

/**
 * @author yuisama
 * @date 2023/03/15 19:33
 * 合并两个非递减数组
 **/
public class Num88_MergeTwoArray {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int i = 0,j = 0,k = 0;
        int[] temp = new int[nums1.length];
        // 此时两个子数组都还有元素没有遍历完
        while (i < m && j < n) {
            if (nums1[i] < nums2[j]) {
                // 将i对应的元素写回temp
                temp[k ++] = nums1[i ++];
            }else {
                // 此时nums2[j] < nums1[i]
                temp[k ++] = nums2[j ++];
            }
        }
        // 此时一定有一个子数组遍历完毕~
        // 只需要将剩下的没走完的写回temp
        while (i < m) {
            temp[k ++] = nums1[i ++];
        }
        while (j < n) {
            temp[k ++] = nums2[j ++];
        }
        // 此时两个数组的所有有效元素全部合并到了temp数组中，写回nums1
        for (int l = 0; l < nums1.length; l++) {
            nums1[l] = temp[l];
        }
    }
}